package com.lyf.boot.modules.system.service;

import com.lyf.boot.core.model.OptionVo;
import com.lyf.boot.core.model.PageInfo;
import com.lyf.boot.modules.system.entity.dto.SysRoleDto;
import com.lyf.boot.modules.system.entity.dto.SysRolePageDto;
import com.lyf.boot.modules.system.entity.dto.SysRolePermDto;
import com.lyf.boot.modules.system.entity.vo.SysRoleVo;

import java.util.List;

/**
 * @author Luyufan
 * @date 2023/7/7 15:36
 */
public interface ISysRoleService {

    /**
     * 分页查询角色
     * @author Luyufan
     * @date 2023/7/7 15:38
     * @param dto
     * @return PageInfo<SysRoleVo>
     */
    PageInfo<SysRoleVo> getSysRolePage(SysRolePageDto dto);

    /**
     * 查询所有角色
     * @author Luyufan
     * @date 2023/8/14 14:25
     * @param
     * @return List<OptionVo>
     */
    List<OptionVo> getAllRole();

    /**
     * 查询角色详情
     * @author Luyufan
     * @date 2023/8/14 15:59
     * @param roleId
     * @return Object
     */
    SysRoleVo getSysRoleInfo(Long roleId);

    /**
     * 新增角色
     * @author Luyufan
     * @date 2023/8/14 16:11
     * @param dto
     * @return void
     */
    void saveSysRole(SysRoleDto dto);

    /**
     * 修改角色
     * @author Luyufan
     * @date 2023/8/14 16:11
     * @param dto
     * @return void
     */
    void updateSysRole(SysRoleDto dto);

    /**
     * 删除角色
     * @author Luyufan
     * @date 2023/8/14 16:11
     * @param ids
     * @return void
     */
    void deleteSysRole(List<Long> ids);

    /**
     * 获取角色所有权限
     */
    List<Long> getSysRolePermList(Long roleId);

    /**
     * 角色授权
     * @param dto
     */
    void grantRolePerm(SysRolePermDto dto);
}
